package com.hengdu.cms.helloword;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import org.junit.Test;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Provider {

	// 生成消息
	@Test
	public void testSendMessage() throws IOException, TimeoutException {

		// 创建链接工厂对象
		ConnectionFactory connectionFactory = new ConnectionFactory();

		// 设置链接rabbitmq 主机
		connectionFactory.setHost("192.168.57.130");

		// 设置链接 rabbitmq 端口
		connectionFactory.setPort(5672);

		// 设置链接那个虚拟主机
		connectionFactory.setVirtualHost("/ems");

		// 设置访问虚拟主机的用户及密码
		connectionFactory.setUsername("ems");
		connectionFactory.setPassword("ems@123");

		// 获得链接对象
		Connection connection = connectionFactory.newConnection();

		// 获取链接中的通道
		Channel channel = connection.createChannel();

		// 通道绑定对象消息队列
		// 参数1: 队列名称, 如果队列不存在自动创建
		// 参数2: 用来定义队列特性是否要持久化(true: 持久化队列)
		// 参数3: 是否独占队列(true: 独占队列)
		// 参数4: 是否在消费完成后自动删除队列(true 自动删除)
		// 参数5: 额外附加参数
		channel.queueDeclare("Hello", false, false, false, null);

		// 发布消息
		// 参数1: 交换机名称; 参数2: 队列名称; 参数3: 传递消息额外设置; 参数4: 消息的具体内容
		channel.basicPublish("", "Hello", null, "Hello Rabbit MQ".getBytes());

		// 释放资源
		channel.close();
		connection.close();
	}
}
